<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hasOwnProperty 和 isPrototypeOf 练习</title>
</head>
<body>


hasOwnProperty：是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是，此方法无法检查该对象的原型链中是否具有该属性，该属性必须是对象本身的一个成员。
isPrototypeOf:是用来判断要检查其原型链的对象是否存在于指定对象实例中，是则返回true，否则返回false。


<script>
    function siteAdmin(nickName, siteName) {
        this.nickName = nickName;
        this.siteName = siteName;
    }
    siteAdmin.prototype.showAdmin = function () {
        alert(this.nickName + "是" + this.siteName + "的站长!")
    };
    siteAdmin.prototype.showSite = function (siteUrl) {
        this.siteUrl = siteUrl;
        return this.siteName + "的地址是" + this.siteUrl;
    };

    //siteAdmin.prototype.siteUrl = {};

    var matou = new siteAdmin("脚本之家", "WEB前端开发");
    var matou2 = new siteAdmin("脚本之家", "WEB前端开发");
    matou.age = "30";

    //var m1 = new matou();//hasOwnProperty 和 isPrototypeOf 练习.html:33 Uncaught TypeError: matou is not a constructorat hasOwnProperty 和 isPrototypeOf 练习.html:33
    //  matou.showAdmin();
    //  alert(matou.showSite("http://www.jb51.net/"));
    console.log(matou.hasOwnProperty("nickName"));//true
    console.log(matou.hasOwnProperty("age"));//true
    console.log(matou.hasOwnProperty("showAdmin"));//false
    console.log(matou.hasOwnProperty("siteUrl"));//false

    console.log(siteAdmin.prototype.hasOwnProperty("showAdmin"));//true
    console.log(siteAdmin.prototype.hasOwnProperty("siteUrl"));//false  //注意：siteUrl不属于prototype直接属性，所以false

    console.log('new1：' + siteAdmin.prototype.hasOwnProperty("showSite"));//true


    console.log(siteAdmin.prototype.isPrototypeOf(matou))//true
    console.log(siteAdmin.prototype.isPrototypeOf(matou2))//true





</script>
</body>
</html>